/* 
 * File:   Contenu.h
 * Author: H4314
 *
 * Created on 3 avril 2012, 09:46
 */
#ifndef CONTENU_H
#define	CONTENU_H

#include <string>
#include <vector>
#include <iostream>
#include <boost/regex.hpp>

#include "Node.h"

using namespace std;
using namespace boost;

class Content : public Node {
public:
    // Constructeurs & Destructeurs    
    Content(const string & text="");
    Content(const Content& orig);
    virtual ~Content();
    
    // Getters
    const string & getText() const;
    
    // Setters
    void setText(const string & newText);
    
    // Affichage type XML sur ostream. Level doit être mis à 0, colored sert
    // à afficher des couleurs
    virtual void Draw(ostream & stream, int level, bool colored) const;
    
    // Affichage sous forme d'arbre destiné à un humain
    virtual void Tree(ostream & stream, int level) const;
    
    // Génère la chaîne permettant d'être validée par expression régulière
    virtual string createValidationString() const;
    
    // Valide le contenu avec une série d'expression régulière de validation
    virtual bool validationWithDTD(map<string,regex> *regexs) const;
    
private:
    virtual void Print(ostream & stream) const;
    string text;
};

#endif	/* CONTENU_H */
